<!DOCTYPE html>
<html lang="en-US">
    <head>
        <title>Dist::Zilla::Starter - Guide to getting started with Dist::Zilla - metacpan.org</title>
        <link rel="preload" as="fetch" href="https://metacpan.org/account/login_status" crossorigin="anonymous" />
        <link href="https://metacpan.org/_assets/b8ccceeed47a0652049703d99326a9cea4933443.css" rel="stylesheet" type="text/css">
        <script src="https://metacpan.org/_assets/6bfedafe2d7caa915b7d84f61b45936818e3242e.js" type="text/javascript" defer></script>
        <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of Dist-Zilla-PluginBundle-Starter - MetaCPAN" href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/releases.rss" />
        <link rel="canonical" href="./Dist::Zilla::Starter.html" />
        <meta name="description" content="Guide to getting started with Dist::Zilla" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
        <link rel="shortcut icon" href="https://metacpan.org/static/icons/favicon.ico">
        <link rel="apple-touch-icon" sizes="152x152" href="https://metacpan.org/static/icons/apple-touch-icon.png">
        <link rel="search" href="https://metacpan.org/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN">
        <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          (function(skey, ga_id){
            ga('create', ga_id, {
              siteSpeedSampleRate : 100,
              storage             : 'none',
              clientId            : localStorage.getItem(skey)
            });
            ga(function(tracker) {
              localStorage.setItem(skey, tracker.get('clientId'));
            });
            ga('send', 'pageview');
          })('ga:clientId', 'UA-27829474-1');
        </script>
<meta name="twitter:card"        content="summary" />
<meta name="twitter:url"         content="https://metacpan.org/pod/Dist::Zilla::Starter" />
<meta name="twitter:title"       content="Dist::Zilla::Starter" />
<meta name="twitter:description" content="Guide to getting started with Dist::Zilla" />
<meta name="twitter:site"        content="metacpan" />
    </head>
    <body>
        <nav class="navbar navbar-default" role="navigation">
            <div class="header-logo-large hidden-xs">
              <a href="https://metacpan.org/" tabindex="0">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#logo" />
                </svg>
              </a>
            </div>
            <div class="header-logo-icon visible-xs">
              <a href="https://metacpan.org/">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#dots" />
                </svg>
              </a>
            </div>
            <ul class="nav navbar-nav menu-items hidden-xs hidden-sm">
              <li><a href="https://metacpan.org/about">About</a></li>
              <li><a href="https://metacpan.org/about/sponsors">Sponsor</a></li>
              <li><a href="https://grep.metacpan.org/">grep::cpan</a></li>
              <li><a href="https://metacpan.org/recent">Recent</a></li>
              <li><a href="https://metacpan.org/about/faq">FAQ</a></li>
              <li><a href="https://metacpan.org/tools">Tools</a></li>
              <li><a href="https://fastapi.metacpan.org/">API</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <button type="button" class="searchbar-btn visible-xs visible-sm">
                    <i class="fa fa-search button-fa-icon"></i>
                </button>
                <form action="https://metacpan.org/search" class="searchbar-form visible-md visible-lg search-form form-horizontal">
                   <input type="hidden" name="size" id="metacpan_search-size" value="20">
                  <div class="form-group">
                      <div class="search-group">
                        <i class="fa fa-search"></i>
                        <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value="">
                      </div>
                  </div>
                </form>
                    <li class="icon-slidepanel visible-xs visible-sm">
                      <button data-toggle="slidepanel" data-target=".slidepanel">
                        <span class="button-fa-icon">
                          <i class="fa fa-bars slidepanel-open"></i>
                          <i class="fa fa-times slidepanel-close"></i>
                        </span>
                      </button>
                    </li>
                <form action="https://metacpan.org/account/logout" method="POST" id="metacpan-logout"></form>
                <li class="dropdown logged_in" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li><a href="https://metacpan.org/account/identities">Identities</a></li>
                        <li><a href="https://metacpan.org/account/profile">Profile</a></li>
                        <li><a href="https://metacpan.org/account/favorite/list">Favorites</a></li>
                        <li>
                            <a href="./Dist::Zilla::Starter.html#" type="button" onclick="$('#metacpan-logout').submit(); return false">
                              Logout
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_out" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="https://metacpan.org/login/github">
                                <i class="fab fa-github fa-fw"></i>
                                GitHub
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/twitter">
                                <i class="fab fa-twitter fa-fw"></i>
                                Twitter
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/google">
                                <i class="fab fa-google fa-fw"></i>
                                Google
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_placeholder">
                    <button>
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                    </button>
                </li>
            </ul>
        </nav>
        <div class="page-content ">
          <!--
          <div class="top-notify-banner">
            <i class="fas fa-info-circle"></i>
          </div>
          -->
          <nav class="sidebar">
            <div class="slidepanel">
              <ul class="nav-list ">
    <li class="nav-header no-margin-top">
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The date that this version of Dist-Zilla-PluginBundle-Starter was released.">
      <span class="relatize">10 Jan 2021 02:37:37 UTC</span>
    </li>
  <li>
    Distribution: <a href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter">Dist-Zilla-PluginBundle-Starter</a>
  </li>
  <li>
    Module version: v5.0.2
  </li>
  <li>
    <a data-keyboard-shortcut="g s" href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/source/lib/Dist/Zilla/Starter.pm">Source</a>
    (<a href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/source/lib/Dist/Zilla/Starter.pm?raw=1">raw</a>)
  </li>
  <li>
    <a data-keyboard-shortcut="g b" href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/source/lib/Dist/Zilla">Browse</a>
    (<a href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/source/lib/Dist/Zilla?raw=1">raw</a>)
  </li>
    <li>
      <a data-keyboard-shortcut="g c" href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/changes">Changes</a>
    </li>
    <li>
      <a rel="noopener nofollow" class="nopopup" href="./Dist::Zilla::Starter.html">Homepage</a>
    </li>
    <li>
      <a class="nopopup" href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/contribute">How to Contribute</a>
    </li>
    <li>
        <a rel="noopener nofollow" data-keyboard-shortcut="g r" href="https://github.com/Grinnz/Dist-Zilla-PluginBundle-Starter">Repository</a>
    </li>
    <li>
      <a rel="noopener nofollow" data-keyboard-shortcut="g i" href="https://github.com/Grinnz/Dist-Zilla-PluginBundle-Starter/issues">Issues</a>
      (0)
    </li>
    <li>
      <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=Dist-Zilla-PluginBundle-Starter+v5.0.2" title="Matrix">Testers</a>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2">Kwalitee</a>
    </li>
    <li>
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on Dist-Zilla-PluginBundle-Starter who have released something to CPAN in the last 2 years (i.e. the # people likely able to release critical fixes in a timely manner)">
      Bus factor: 1
      </div>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpancover.com/latest/Dist-Zilla-PluginBundle-Starter-v5.0.2/index.html">85.00% Coverage </a>
    </li>
    <li>
      License: artistic_2
    </li>
    <li>
      Perl: v5.10.1
    </li>
    <li class="chat-banner">
      <div><a rel="noopener nofollow" target="_blank" href="https://kiwiirc.com/nextclient/#irc://irc.perl.org/#distzilla?nick=mc-guest-?">Chat with us!</a></div>
    </li>
    <li class="nav-header">Activity</li>
    <li>
<div class="activity-graph">
    <img src="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/activity.svg?res=month" />
    <div class="comment">24 month</div>
</div>
    </li>
    <li class="nav-header">Tools</li>
    <li>
      <a itemprop="downloadUrl" href="https://cpan.metacpan.org/authors/id/D/DB/DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2.tar.gz">
      Download (<span itemprop="fileSize">40.01KB</span>)</a>
    </li>
    <li>
      <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FDBOOK%2FDist-Zilla-PluginBundle-Starter-v5.0.2%2Flib%2FDist%2FZilla%2FStarter.pm">
        MetaCPAN Explorer
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/permissions">
        Permissions
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/releases.rss">
        Subscribe to distribution
      </a>
    </li>
    <li>
      <button class="btn btn-link" data-toggle="modal" data-target="#metacpan_install-instructions-dialog">
        Install Instructions
      </button>
    </li>
    <li>
      <form action="https://metacpan.org/search">
        <input type="hidden" name="q" value="dist:Dist-Zilla-PluginBundle-Starter">
        <input type="search" name="q" placeholder="Search distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
      </form>
    </li>
    <li>
      <form action="https://grep.metacpan.org/search">
        <input type="hidden" name="qd" value="Dist-Zilla-PluginBundle-Starter">
        <input type="hidden" name="source" value="metacpan">
        <input type="search" name="q" placeholder="grep distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
     </form>
    </li>
    <li class="version-jump">
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/Dist/Zilla/Starter.pm&#39;" class="form-control tool-bar-form">
  <option disabled selected>Jump to version</option>
<option
  disabled
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2"
>v5.0.2
  (DBOOK on 2021-01-10)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.1"
>v5.0.1
  (DBOOK on 2020-12-30)</option>
<optgroup label="BackPAN">'
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.0"
>v5.0.0
  (DBOOK on 2020-12-30)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v4.0.1"
>v4.0.1
  (DBOOK on 2020-06-28)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v4.0.0"
>v4.0.0
  (DBOOK on 2020-02-17)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.5"
>v3.0.5
  (DBOOK on 2019-09-10)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.4"
>v3.0.4
  (DBOOK on 2019-09-09)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.3"
>v3.0.3
  (DBOOK on 2019-05-19)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.2"
>v3.0.2
  (DBOOK on 2019-05-18)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.1"
>v3.0.1
  (DBOOK on 2018-09-25)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.0"
>v3.0.0
  (DBOOK on 2018-09-25)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.005"
>0.005
  (DBOOK on 2017-04-07)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.004"
>0.004
  (DBOOK on 2016-04-22)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.003"
>0.003
  (DBOOK on 2016-04-15)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.002"
>0.002
  (DBOOK on 2016-04-13)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.001"
>0.001
  (DBOOK on 2016-04-08)</option>
</optgroup>
</select>
    </li>
    <li class="version-diff">
<select onchange="document.location.href='/release/DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2/diff/' + encodeURIComponent(this.value) + '/lib/Dist/Zilla/Starter.pm'
" class="form-control tool-bar-form">
  <option disabled selected>Diff with version</option>
<option
  disabled
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2"
>v5.0.2
  (DBOOK on 2021-01-10)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.1"
>v5.0.1
  (DBOOK on 2020-12-30)</option>
<optgroup label="BackPAN">'
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.0"
>v5.0.0
  (DBOOK on 2020-12-30)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v4.0.1"
>v4.0.1
  (DBOOK on 2020-06-28)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v4.0.0"
>v4.0.0
  (DBOOK on 2020-02-17)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.5"
>v3.0.5
  (DBOOK on 2019-09-10)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.4"
>v3.0.4
  (DBOOK on 2019-09-09)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.3"
>v3.0.3
  (DBOOK on 2019-05-19)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.2"
>v3.0.2
  (DBOOK on 2019-05-18)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.1"
>v3.0.1
  (DBOOK on 2018-09-25)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.0"
>v3.0.0
  (DBOOK on 2018-09-25)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.005"
>0.005
  (DBOOK on 2017-04-07)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.004"
>0.004
  (DBOOK on 2016-04-22)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.003"
>0.003
  (DBOOK on 2016-04-15)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.002"
>0.002
  (DBOOK on 2016-04-13)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.001"
>0.001
  (DBOOK on 2016-04-08)</option>
</optgroup>
</select>
    </li>

    <li>
<ul class="dependencies">
  <li class="nav-header">Dependencies</li>
  <li><a href="./Dist::Zilla.html" title="Dist::Zilla" class="ellipsis">Dist::Zilla</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::BumpVersionAfterRelease" title="Dist::Zilla::Plugin::BumpVersionAfterRelease" class="ellipsis">Dist::Zilla::Plugin::BumpVersionAfterRelease</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ConfirmRelease" title="Dist::Zilla::Plugin::ConfirmRelease" class="ellipsis">Dist::Zilla::Plugin::ConfirmRelease</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::CopyFilesFromRelease" title="Dist::Zilla::Plugin::CopyFilesFromRelease" class="ellipsis">Dist::Zilla::Plugin::CopyFilesFromRelease</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::DistINI" title="Dist::Zilla::Plugin::DistINI" class="ellipsis">Dist::Zilla::Plugin::DistINI</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ExecDir" title="Dist::Zilla::Plugin::ExecDir" class="ellipsis">Dist::Zilla::Plugin::ExecDir</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::FakeRelease" title="Dist::Zilla::Plugin::FakeRelease" class="ellipsis">Dist::Zilla::Plugin::FakeRelease</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::GatherDir" title="Dist::Zilla::Plugin::GatherDir" class="ellipsis">Dist::Zilla::Plugin::GatherDir</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::License" title="Dist::Zilla::Plugin::License" class="ellipsis">Dist::Zilla::Plugin::License</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker" title="Dist::Zilla::Plugin::MakeMaker" class="ellipsis">Dist::Zilla::Plugin::MakeMaker</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker::Awesome" title="Dist::Zilla::Plugin::MakeMaker::Awesome" class="ellipsis">Dist::Zilla::Plugin::MakeMaker::Awesome</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Manifest" title="Dist::Zilla::Plugin::Manifest" class="ellipsis">Dist::Zilla::Plugin::Manifest</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ManifestSkip" title="Dist::Zilla::Plugin::ManifestSkip" class="ellipsis">Dist::Zilla::Plugin::ManifestSkip</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaConfig" title="Dist::Zilla::Plugin::MetaConfig" class="ellipsis">Dist::Zilla::Plugin::MetaConfig</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaJSON" title="Dist::Zilla::Plugin::MetaJSON" class="ellipsis">Dist::Zilla::Plugin::MetaJSON</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaNoIndex" title="Dist::Zilla::Plugin::MetaNoIndex" class="ellipsis">Dist::Zilla::Plugin::MetaNoIndex</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaProvides::Package" title="Dist::Zilla::Plugin::MetaProvides::Package" class="ellipsis">Dist::Zilla::Plugin::MetaProvides::Package</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaYAML" title="Dist::Zilla::Plugin::MetaYAML" class="ellipsis">Dist::Zilla::Plugin::MetaYAML</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ModuleBuildTiny" title="Dist::Zilla::Plugin::ModuleBuildTiny" class="ellipsis">Dist::Zilla::Plugin::ModuleBuildTiny</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ModuleBuildTiny::Fallback" title="Dist::Zilla::Plugin::ModuleBuildTiny::Fallback" class="ellipsis">Dist::Zilla::Plugin::ModuleBuildTiny::Fallback</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::NextRelease" title="Dist::Zilla::Plugin::NextRelease" class="ellipsis">Dist::Zilla::Plugin::NextRelease</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Pod2Readme" title="Dist::Zilla::Plugin::Pod2Readme" class="ellipsis">Dist::Zilla::Plugin::Pod2Readme</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PodSyntaxTests" title="Dist::Zilla::Plugin::PodSyntaxTests" class="ellipsis">Dist::Zilla::Plugin::PodSyntaxTests</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PruneCruft" title="Dist::Zilla::Plugin::PruneCruft" class="ellipsis">Dist::Zilla::Plugin::PruneCruft</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PruneFiles" title="Dist::Zilla::Plugin::PruneFiles" class="ellipsis">Dist::Zilla::Plugin::PruneFiles</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ReadmeAnyFromPod" title="Dist::Zilla::Plugin::ReadmeAnyFromPod" class="ellipsis">Dist::Zilla::Plugin::ReadmeAnyFromPod</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Regenerate::AfterReleasers" title="Dist::Zilla::Plugin::Regenerate::AfterReleasers" class="ellipsis">Dist::Zilla::Plugin::Regenerate::AfterReleasers</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::RewriteVersion" title="Dist::Zilla::Plugin::RewriteVersion" class="ellipsis">Dist::Zilla::Plugin::RewriteVersion</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::RunExtraTests" title="Dist::Zilla::Plugin::RunExtraTests" class="ellipsis">Dist::Zilla::Plugin::RunExtraTests</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ShareDir" title="Dist::Zilla::Plugin::ShareDir" class="ellipsis">Dist::Zilla::Plugin::ShareDir</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::TemplateModule" title="Dist::Zilla::Plugin::TemplateModule" class="ellipsis">Dist::Zilla::Plugin::TemplateModule</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::Compile" title="Dist::Zilla::Plugin::Test::Compile" class="ellipsis">Dist::Zilla::Plugin::Test::Compile</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::ReportPrereqs" title="Dist::Zilla::Plugin::Test::ReportPrereqs" class="ellipsis">Dist::Zilla::Plugin::Test::ReportPrereqs</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::TestRelease" title="Dist::Zilla::Plugin::TestRelease" class="ellipsis">Dist::Zilla::Plugin::TestRelease</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Plugin::UploadToCPAN" title="Dist::Zilla::Plugin::UploadToCPAN" class="ellipsis">Dist::Zilla::Plugin::UploadToCPAN</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Role::MintingProfile::ShareDir" title="Dist::Zilla::Role::MintingProfile::ShareDir" class="ellipsis">Dist::Zilla::Role::MintingProfile::ShareDir</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Role::PluginBundle::Config::Slicer" title="Dist::Zilla::Role::PluginBundle::Config::Slicer" class="ellipsis">Dist::Zilla::Role::PluginBundle::Config::Slicer</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Role::PluginBundle::Easy" title="Dist::Zilla::Role::PluginBundle::Easy" class="ellipsis">Dist::Zilla::Role::PluginBundle::Easy</a></li>
  <li><a href="https://metacpan.org/pod/Dist::Zilla::Role::PluginBundle::PluginRemover" title="Dist::Zilla::Role::PluginBundle::PluginRemover" class="ellipsis">Dist::Zilla::Role::PluginBundle::PluginRemover</a></li>
  <li><a href="Moose.html" title="Moose" class="ellipsis">Moose</a></li>
  <li><a href="https://metacpan.org/pod/Test::Pod" title="Test::Pod" class="ellipsis">Test::Pod</a></li>
  <li><a href="https://metacpan.org/pod/namespace::clean" title="namespace::clean" class="ellipsis">namespace::clean</a></li>
  <li>
    <hr>
  </li>
  <li>
    <a href="https://metacpan.org/module/Dist::Zilla::Starter/requires">Reverse dependencies</a>
  </li>
  <li>
    <a href="http://deps.cpantesters.org/?module=Dist%3A%3AZilla%3A%3AStarter">CPAN Testers List</a>
  </li>
  <li>
    <a href="https://cpandeps.grinnz.com/?dist=Dist-Zilla-PluginBundle-Starter">Dependency graph</a>
  </li>
</ul>
    </li>
    <li class="nav-header">Permalinks</li>
    <li>
      <a href="https://metacpan.org/release/DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2/view/lib/Dist/Zilla/Starter.pm">This version</a>
    </li>
    <li>
      <a href="./Dist::Zilla::Starter.html">Latest version</a>
    </li>
    <li>
<div class="plussers">
<div class="nav-header">++ed by:</div>
<div>
<a class="display-all" href="https://metacpan.org/author/STEVIED"><img src="https://www.gravatar.com/avatar/d05810eb5aa00f693481dcbfd8cc0317?d=identicon&amp;s=20" title="STEVIED" alt="STEVIED"></a>
<a class="display-all" href="https://metacpan.org/author/ALEXPAN"><img src="https://www.gravatar.com/avatar/70e0ed15dcfbb2cf0e09fbb0d09c9bf8?d=identicon&amp;s=20" title="ALEXPAN" alt="ALEXPAN"></a>
<a class="display-all" href="https://metacpan.org/author/DOLMEN"><img src="https://www.gravatar.com/avatar/70d9b050bfe39350c234d710fadfcd39?d=identicon&amp;s=20" title="DOLMEN" alt="DOLMEN"></a>
<a class="display-all" href="https://metacpan.org/author/DBOEHMER"><img src="https://www.gravatar.com/avatar/220fbe10dba79664fe84771d5ea32763?d=identicon&amp;s=20" title="DBOEHMER" alt="DBOEHMER"></a>
<a class="display-all" href="https://metacpan.org/author/CONTRA"><img src="https://www.gravatar.com/avatar/0c6e9af22d57e7e8641517069078da5b?d=identicon&amp;s=20" title="CONTRA" alt="CONTRA"></a>
</div>
<!-- Display counts of plussers-->
<div>
    <a href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter/plussers">5 PAUSE users</a>
</div>
<div>
    1 non-PAUSE user
</div>
</div>
    </li>
    <li>
<div id="metacpan_contributors">
  <div>
    <button class="btn-link"
      onclick="$(this).hide(); $('#metacpan_contributors ul').slideDown(); return false;"
    >and 1 contributors</button>
  </div>
  <ul style="display: none">
    <li class="contributor"
      data-contrib-email="68724930+rafork@users.noreply.github.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      raf
    </li>
  </ul>
</div>
    </li>
              </ul>
            </div>
          </nav>
          <div class="content-navigation">
<div class="breadcrumbs">
  <span>
    <a data-keyboard-shortcut="g a" rel="author" href="https://metacpan.org/author/DBOOK" class="author-name">Dan Book</a>
  </span>
  <span>&nbsp;/&nbsp;</span>
  <div class="release dist-release status-latest maturity-released">
    <span class="dropdown"><b class="caret"></b></span>
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/Dist/Zilla/Starter.pm&#39;" class="">
<option
  selected
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.2"
>v5.0.2
  (DBOOK on 2021-01-10)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.1"
>v5.0.1
  (DBOOK on 2020-12-30)</option>
<optgroup label="BackPAN">'
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v5.0.0"
>v5.0.0
  (DBOOK on 2020-12-30)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v4.0.1"
>v4.0.1
  (DBOOK on 2020-06-28)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v4.0.0"
>v4.0.0
  (DBOOK on 2020-02-17)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.5"
>v3.0.5
  (DBOOK on 2019-09-10)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.4"
>v3.0.4
  (DBOOK on 2019-09-09)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.3"
>v3.0.3
  (DBOOK on 2019-05-19)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.2"
>v3.0.2
  (DBOOK on 2019-05-18)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.1"
>v3.0.1
  (DBOOK on 2018-09-25)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-v3.0.0"
>v3.0.0
  (DBOOK on 2018-09-25)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.005"
>0.005
  (DBOOK on 2017-04-07)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.004"
>0.004
  (DBOOK on 2016-04-22)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.003"
>0.003
  (DBOOK on 2016-04-15)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.002"
>0.002
  (DBOOK on 2016-04-13)</option>
<option
  
  value="DBOOK/Dist-Zilla-PluginBundle-Starter-0.001"
>0.001
  (DBOOK on 2016-04-08)</option>
</optgroup>
</select>
    <a data-keyboard-shortcut="g d" class="release-name" href="https://metacpan.org/dist/Dist-Zilla-PluginBundle-Starter">Dist-Zilla-PluginBundle-Starter-v5.0.2</a>
  </div>
<span class="river-gauge-gauge">
  <svg width="24px"
       height="15px"
       version="1.1"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink">

    <g>
      <title>        River stage one &#10;
          • 5 direct dependents &#10;          • 7 total dependents
      </title>

      <rect x="0"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="5"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="10"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="15"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="20"  y="0" width="4" height="15" fill="#e4e2e2" />
    </g>
  </svg>

</span>
<div id="Dist-Zilla-PluginBundle-Starter-fav" class="logged_in">
<form action="https://metacpan.org/account/favorite/add" style="display: inline" onsubmit="return favDistribution(this)">
    <input type="hidden" name="remove" value="0">
    <input type="hidden" name="release" value="Dist-Zilla-PluginBundle-Starter-v5.0.2">
    <input type="hidden" name="author" value="DBOOK">
    <input type="hidden" name="distribution" value="Dist-Zilla-PluginBundle-Starter">
    <button type="submit" class="favorite highlight"><span>6</span> ++</button>
</form>
</div>
<div class="logged_out">
<a href="./Dist::Zilla::Starter.html" onclick="alert('Please sign in to add favorites'); return false" class="favorite highlight">
<span>6</span> ++</a>
</div>
   / <span>Dist::Zilla::Starter</span>
</div>
          </div>
          <main class="content">


<nav class="toc">
  <div class="toc-header"><strong>Contents</strong></div>
<ul>
  <li><a href="./Dist::Zilla::Starter.html#NAME">NAME</a></li>
  <li><a href="./Dist::Zilla::Starter.html#DESCRIPTION">DESCRIPTION</a></li>
  <li><a href="./Dist::Zilla::Starter.html#OVERVIEW">OVERVIEW</a></li>
  <li><a href="./Dist::Zilla::Starter.html#CPAN-DISTRIBUTIONS">CPAN DISTRIBUTIONS</a>
    <ul>
      <li><a href="./Dist::Zilla::Starter.html#Releases,-Distributions,-and-Modules">Releases, Distributions, and Modules</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Install-Scripts">Install Scripts</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Metadata">Metadata</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Other-Files">Other Files</a></li>
    </ul>
  </li>
  <li><a href="./Dist::Zilla::Starter.html#A-BRIEF-HISTORY-OF-AUTHORING">A BRIEF HISTORY OF AUTHORING</a>
    <ul>
      <li><a href="./Dist::Zilla::Starter.html#ExtUtils::MakeMaker">ExtUtils::MakeMaker</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Module::Install">Module::Install</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Module::Build">Module::Build</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Module::Build::Tiny">Module::Build::Tiny</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Dist::Zilla">Dist::Zilla</a></li>
    </ul>
  </li>
  <li><a href="./Dist::Zilla::Starter.html#DZIL-AND-BUNDLES">DZIL AND BUNDLES</a>
    <ul>
      <li><a href="./Dist::Zilla::Starter.html#%5B@Basic%5D">[@Basic]</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Milla-and-Minilla">Milla and Minilla</a></li>
      <li><a href="./Dist::Zilla::Starter.html#%5B@Starter%5D-and-%5B@Starter::Git%5D">[@Starter] and [@Starter::Git]</a></li>
    </ul>
  </li>
  <li><a href="./Dist::Zilla::Starter.html#THE-DZIL-CORE">THE DZIL CORE</a>
    <ul>
      <li><a href="./Dist::Zilla::Starter.html#Dist::Zilla1">Dist::Zilla</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Dist::Zilla::Dist::Builder">Dist::Zilla::Dist::Builder</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Dist::Zilla::Dist::Minter">Dist::Zilla::Dist::Minter</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Dist::Zilla::MVP::Assembler">Dist::Zilla::MVP::Assembler</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Dist::Zilla::App">Dist::Zilla::App</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Test::DZil">Test::DZil</a></li>
    </ul>
  </li>
  <li><a href="./Dist::Zilla::Starter.html#CONFIGURATION">CONFIGURATION</a></li>
  <li><a href="./Dist::Zilla::Starter.html#COMMANDS">COMMANDS</a>
    <ul>
      <li><a href="./Dist::Zilla::Starter.html#Running-Tests">Running Tests</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Uploading-a-Release">Uploading a Release</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Installing-Dependencies">Installing Dependencies</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Other-Commands">Other Commands</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Regenerating-Files">Regenerating Files</a></li>
    </ul>
  </li>
  <li><a href="./Dist::Zilla::Starter.html#MINTING">MINTING</a></li>
  <li><a href="./Dist::Zilla::Starter.html#PHASES">PHASES</a>
    <ul>
      <li><a href="./Dist::Zilla::Starter.html#BeforeBuild">BeforeBuild</a></li>
      <li><a href="./Dist::Zilla::Starter.html#BeforeMint">BeforeMint</a></li>
      <li><a href="./Dist::Zilla::Starter.html#FileGatherer">FileGatherer</a></li>
      <li><a href="./Dist::Zilla::Starter.html#EncodingProvider">EncodingProvider</a></li>
      <li><a href="./Dist::Zilla::Starter.html#FilePruner">FilePruner</a></li>
      <li><a href="./Dist::Zilla::Starter.html#FileMunger">FileMunger</a></li>
      <li><a href="./Dist::Zilla::Starter.html#AfterMint">AfterMint</a></li>
      <li><a href="./Dist::Zilla::Starter.html#PrereqSource">PrereqSource</a></li>
      <li><a href="./Dist::Zilla::Starter.html#InstallTool">InstallTool</a></li>
      <li><a href="./Dist::Zilla::Starter.html#AfterBuild">AfterBuild</a></li>
      <li><a href="./Dist::Zilla::Starter.html#BuildRunner">BuildRunner</a></li>
      <li><a href="./Dist::Zilla::Starter.html#TestRunner">TestRunner</a></li>
      <li><a href="./Dist::Zilla::Starter.html#BeforeArchive">BeforeArchive</a></li>
      <li><a href="./Dist::Zilla::Starter.html#BeforeRelease">BeforeRelease</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Releaser">Releaser</a></li>
      <li><a href="./Dist::Zilla::Starter.html#AfterRelease">AfterRelease</a></li>
      <li><a href="./Dist::Zilla::Starter.html#NameProvider">NameProvider</a></li>
      <li><a href="./Dist::Zilla::Starter.html#VersionProvider">VersionProvider</a></li>
      <li><a href="./Dist::Zilla::Starter.html#ReleaseStatusProvider">ReleaseStatusProvider</a></li>
      <li><a href="./Dist::Zilla::Starter.html#LicenseProvider">LicenseProvider</a></li>
      <li><a href="./Dist::Zilla::Starter.html#MetaProvider">MetaProvider</a></li>
      <li><a href="./Dist::Zilla::Starter.html#ShareDir">ShareDir</a></li>
      <li><a href="./Dist::Zilla::Starter.html#ExecFiles">ExecFiles</a></li>
      <li><a href="./Dist::Zilla::Starter.html#Regenerator">Regenerator</a></li>
    </ul>
  </li>
  <li><a href="./Dist::Zilla::Starter.html#AUTHOR">AUTHOR</a></li>
  <li><a href="./Dist::Zilla::Starter.html#COPYRIGHT-AND-LICENSE">COPYRIGHT AND LICENSE</a></li>
  <li><a href="./Dist::Zilla::Starter.html#SEE-ALSO">SEE ALSO</a></li>
</ul></nav>
<div class="pod anchors">
<h1 id="NAME">NAME</h1>

<p>Dist::Zilla::Starter - Guide to getting started with Dist::Zilla</p>

<h1 id="DESCRIPTION">DESCRIPTION</h1>

<p>This is a guide to the inner workings of <a href="./Dist::Zilla.html">Dist::Zilla</a> for managing and releasing CPAN distributions effectively, in particular with the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter">[@Starter]</a> and <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter::Git">[@Starter::Git]</a> bundles. See their documentation for specific usage.</p>

<h1 id="OVERVIEW">OVERVIEW</h1>

<p><a href="./Dist::Zilla.html">Dist::Zilla</a> is a CPAN distribution management tool, which itself just defines a set of phases relevant to the distribution building, testing, and releasing process, and relies on plugins and commands for specific behavior.</p>

<p>The sections below will walk through all of the essentials for using Dist::Zilla effectively. If you are already familiar with general CPAN distribution authoring, skip ahead to <a href="./Dist::Zilla::Starter.html#DZIL-AND-BUNDLES">&quot;DZIL AND BUNDLES&quot;</a>.</p>

<ul>

<li><p><a href="./Dist::Zilla::Starter.html#CPAN-DISTRIBUTIONS">&quot;CPAN DISTRIBUTIONS&quot;</a> - A modern CPAN distribution should have a basic well-defined structure so its contents and attributes can be recognized by CPAN infrastructure and tooling.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#A-BRIEF-HISTORY-OF-AUTHORING">&quot;A BRIEF HISTORY OF AUTHORING&quot;</a> - The historical progression of CPAN distribution authoring tools that led to the development of Dist::Zilla.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#DZIL-AND-BUNDLES">&quot;DZIL AND BUNDLES&quot;</a> - Dist::Zilla plugin bundles that can provide a starting point or a ready-made complete distribution management tool.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#THE-DZIL-CORE">&quot;THE DZIL CORE&quot;</a> - The infrastructure of Dist::Zilla provides the framework for plugins and commands to define specific behavior in a configurable and extensible way.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#CONFIGURATION">&quot;CONFIGURATION&quot;</a> - Configuring a Dist::Zilla project and the plugins for it to use in <i>dist.ini</i>.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#COMMANDS">&quot;COMMANDS&quot;</a> - Taking action with a configured Dist::Zilla project via built-in and installable commands.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#MINTING">&quot;MINTING&quot;</a> - Dist::Zilla provides the ability to generate new distribution skeletons using the same core infrastructure and a minting profile.</p>

</li>
<li><p><a href="./Dist::Zilla::Starter.html#PHASES">&quot;PHASES&quot;</a> - Commands execute a series of phases, which each execute any actions registered by plugins for that phase. The known phases and their usage are listed here.</p>

</li>
</ul>

<h1 id="CPAN-DISTRIBUTIONS"><a id="CPAN"></a>CPAN DISTRIBUTIONS</h1>

<p>Before getting into how Dist::Zilla manages CPAN distributions, it&#39;s important to understand what a CPAN distribution is. If you are here, you probably know that <a href="https://www.cpan.org">CPAN</a> is a repository of Perl modules that can easily be downloaded, installed, and updated. But for all of that to work smoothly, these modules must be uploaded with certain structure; one can&#39;t just upload a tarball of a GitHub repository and expect the CPAN toolchain to understand it.</p>

<p>A typical CPAN distribution layout might look something like:</p>

<pre><code>  lib/
    Some/
      Code.pm
      Code.pod
  script/
    some-code
  t/
    tests.t
  Changes
  dist.ini
  LICENSE      # generated by dzil
  Makefile.PL  # generated by dzil
  MANIFEST     # generated by dzil or other tools
  META.json    # generated by dzil or other tools
  META.yml     # generated by dzil or other tools
  README       # generated by dzil</code></pre>

<h2 id="Releases,-Distributions,-and-Modules"><a id="Releases"></a><a id="Releases--Distributions--and-Modules"></a>Releases, Distributions, and Modules</h2>

<p>Each tarball uploaded to CPAN is a <b>release</b> of a <b>distribution</b> containing one or more <b>modules</b>. Modules are declared by the <a href="functions/CORE.html#package">package</a> statement, and loaded from the filesystem by the <a href="functions/CORE.html#use">use</a> statement. Package names don&#39;t necessarily need to match the name of the file, but for the file and package to work together effectively as a module, they should match, with the namespace separators (<code>::</code>) represented by directory separators in the filesystem, and the module file itself having the <code>.pm</code> file extension.</p>

<pre><code>  tarball: Some-Code-1.00.tar.gz
  release: Some-Code-1.00
  distribution: Some-Code
  files in lib/: Some/Code.pm, Some/Code/Other.pm
  modules: Some::Code, Some::Code::Other</code></pre>

<p>These module names are the basis of CPAN&#39;s module index, which is maintained by a system called <a href="https://pause.perl.org">PAUSE</a>. When a new release is uploaded to PAUSE, it discovers all packages declared in the distribution, and determines whether they are intended to be indexed, whether the uploader has permissions for each package name, and whether it has a newer version than any currently indexed module of that name. If so, it indexes them, so that future attempts to install any of those modules by name will install that release of that distribution, until such time as a new release successfully indexes those names. By this method, users are able to easily install and update the latest version of any module, and CPAN installers are able to satisfy a distribution&#39;s prerequisites on other modules.</p>

<h2 id="Install-Scripts"><a id="Install"></a>Install Scripts</h2>

<p>After downloading a certain release of a distribution for installation, the CPAN installer will consult the contents of the distribution itself to do so. In order to provide infinite flexibility to how distributions can be installed, a file called <i>Makefile.PL</i> consisting of regular Perl code is run, and is expected to generate a <i>Makefile</i> that dictates the later steps of building, testing, and installing. (Note: this is user-side building, a separate task from the author-side distribution assembling build that will be discussed later.)</p>

<p>While this is traditionally implemented by a module called <a href="https://metacpan.org/pod/ExtUtils::MakeMaker">ExtUtils::MakeMaker</a>, a slightly different process was conceived using a module called <a href="./Module::Build.html">Module::Build</a> (and later <a href="./Module::Build::Tiny.html">Module::Build::Tiny</a>), in which a <i>Build.PL</i> is provided which generates a perl script named <i>Build</i> to perform these tasks instead.</p>

<p>While both methods have been extended and improved using different modules, for Dist::Zilla authors the details of user-side installation are largely unimportant unless custom configuration or installation tasks are required. As such, Dist::Zilla generates this install script itself via <code>-InstallTool</code> plugins such as <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a> or <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ModuleBuildTiny">[ModuleBuildTiny]</a>.</p>

<h2 id="Metadata">Metadata</h2>

<p>In addition to the install script, the other important component of a well-formed CPAN distribution is the metadata. This was originally contained in a file called <i>META.yml</i>, which implemented the CPAN meta spec versions 1.0 through 1.4. When <a href="https://metacpan.org/pod/CPAN::Meta::Spec">CPAN meta spec version 2</a> was conceived, it was implemented using a new file called <i>META.json</i> that can coexist with the legacy format. In either format, this metadata describes aspects of the distribution as a whole such as name, author(s), prerequisites, repository and bugtracking resources, and optionally the name and version of each included package (which if provided will be trusted over PAUSE&#39;s own manual scan).</p>

<p>Well-formed metadata is important to both ensuring the modules can be correctly and painlessly installed, and to provide important ancillary information to tools such as <a href="https://metacpan.org">MetaCPAN</a> when it displays the distribution. Dist::Zilla generates these files as well via the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaYAML">[MetaYAML]</a> and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaJSON">[MetaJSON]</a> plugins.</p>

<h2 id="Other-Files"><a id="Other"></a>Other Files</h2>

<p>The meat of the CPAN distribution, the code, tests, and documentation, are generally expected to be in a certain structure.</p>

<ul>

<li><p>Modules (<i>.pm</i>) and documentation (<i>.pod</i>) are placed in the <i>lib/</i> directory, with a file path corresponding to the module name, as they will be ultimately installed.</p>

</li>
<li><p>Tests (<i>.t</i>) are placed in the <i>t/</i> directory, and do not get installed.</p>

</li>
<li><p>Executables to install have no strict convention but are usually put in <i>bin/</i> or <i>script/</i>.</p>

</li>
</ul>

<p>You may see distributions with these important files in other places, usually because they predate these conventions or for compatibility with old versions of ExtUtils::MakeMaker that required <i>.xs</i> files to be in the distribution root. Other directories may be included in the CPAN distribution, but have no specific meaning by default to the standard installers.</p>

<h1 id="A-BRIEF-HISTORY-OF-AUTHORING"><a id="A"></a>A BRIEF HISTORY OF AUTHORING</h1>

<h2 id="ExtUtils::MakeMaker"><a id="ExtUtils"></a>ExtUtils::MakeMaker</h2>

<pre><code>  $ perl Makefile.PL &amp;&amp; make manifest &amp;&amp; make disttest &amp;&amp; make dist
  $ cpan-upload Some-Code-1.00.tar.gz</code></pre>

<p>Originally, the same tool which allows end users to install the distribution would also be used by the author to manage it and create a release. <a href="https://metacpan.org/pod/ExtUtils::MakeMaker">ExtUtils::MakeMaker</a> contains author-side configuration and commands such as <code>make manifest</code> and <code>make dist</code>. Indeed, many authors still use this as their primary authoring tool, though its close-to-metal nature and extreme backcompat requirements have led many to develop more author-friendly wrappers.</p>

<h2 id="Module::Install"><a id="Module"></a>Module::Install</h2>

<p>One such wrapper is <a href="./Module::Install.html">Module::Install</a>. This differed from many attempts in that it was designed to bundle itself with the distribution, so the end user would install using the bundled code rather than relying on the interface of their possibly outdated ExtUtils::MakeMaker. This was a revolutionary idea and the wrapper interface was well liked, but it introduced other problems.</p>

<p>Due to being bundled with the release, it too became outdated when the author did not regularly release new versions of the distribution, so bugs would linger forever that the end user could not workaround by updating their own toolchain. This was notably a significant issue when Perl 5.26 stopped loading modules from the current working directory by default, a mechanism which the Module::Install code bundled with hundreds of distributions relied upon to load itself.</p>

<p>Additionally, it had a rudimentary plugin system but no way to formally declare what plugins a distribution was using, meaning that given a Module::Install-based Makefile.PL, the author or contributor would have to guess what plugins needed to be installed or bundled for the end user to make it work. On top of (or perhaps due to) these problems, it has become mostly unmaintained and thus has fallen far behind the progress of the CPAN toolchain.</p>

<h2 id="Module::Build"><a id="Module1"></a>Module::Build</h2>

<pre><code>  $ perl Build.PL &amp;&amp; perl Build &amp;&amp; perl Build manifest &amp;&amp; perl Build disttest &amp;&amp; perl Build dist
  $ cpan-upload Some-Code-1.00.tar.gz</code></pre>

<p><a href="./Module::Build.html">Module::Build</a> was created to provide a <code>make</code>-free alternative to <a href="https://metacpan.org/pod/ExtUtils::MakeMaker">ExtUtils::MakeMaker</a>, with the additional goal of being more modern and easier to customize and add features to. Unfortunately this proved to be a lofty goal, as due to widespread use it succumbed to the same stagnation as ExtUtils::MakeMaker; it too has become extremely complex and obtuse, is no longer driven to evolve by its primary author, and must maintain backcompat religiously. This has weakened most of its benefits considerably, as ExtUtils::MakeMaker still remains more compatible with ancient end-user Perls, but Module::Build is still used by some who prefer its interface over ExtUtils::MakeMaker, or who have complicated compilation requirements that are easier to customize in Module::Build.</p>

<h2 id="Module::Build::Tiny"><a id="Module2"></a>Module::Build::Tiny</h2>

<pre><code>  $ mbtiny test --release
  $ mbtiny upload</code></pre>

<p>More recently, <a href="./Module::Build::Tiny.html">Module::Build::Tiny</a> was created as an extremely simple implementation of the <i>Build.PL</i> spec pioneered by Module::Build. A significant reason for its simplicity is that unlike the previously mentioned tools, it is <b>only</b> an install tool; it does not provide any authoring features. A separate tool called <a href="mbtiny.html">mbtiny</a> provides these features in a minimal package, or it works great with dedicated authoring tools like Dist::Zilla.</p>

<h2 id="Dist::Zilla"><a id="Dist"></a>Dist::Zilla</h2>

<pre><code>  $ dzil release</code></pre>

<p>Dist::Zilla came to be one of the first widespread author-side-only tools, and as such it shed many of the limitations of its overworked predecessors.</p>

<ul>

<li><p>It does not have to concern itself with minimalism and compatibility, because the end user does not need to install it; it can use everything that modern CPAN has to offer, and rely on the generated install file to be lightweight and compatible if needed.</p>

</li>
<li><p>The generated install file also has a simpler job, as it doesn&#39;t need to generate the distribution&#39;s metadata aside from any dynamic prerequisites, or implement any author-side commands for convenience, as Dist::Zilla does these tasks itself.</p>

</li>
<li><p>Learning from the mistakes of Module::Install, it has a formal plugin configuration system, and can deterministically find what plugins are needed to build (assemble) the distribution, using the <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::authordeps"><code>dzil authordeps</code></a> command.</p>

</li>
</ul>

<h1 id="DZIL-AND-BUNDLES"><a id="DZIL"></a>DZIL AND BUNDLES</h1>

<p>Dist::Zilla is a CPAN distribution authoring framework. At its core, it only organizes tasks; it requires plugins to implement the specifics of assembling, testing, and releasing the distribution. The author can manually specify in <i>dist.ini</i> the set of plugins that suits their needs, or even write new plugins, but there are also ready-made tools built upon it that require very little study to use effectively.</p>

<h2 id="[@Basic]"><a id="Basic"></a>[@Basic]</h2>

<p>The most basic of these is the core bundle <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Basic">[@Basic]</a>. This bundle contains plugins to perform the most common authoring tasks, and is used throughout most tutorials including <a href="http://dzil.org">dzil.org</a>, but it has unfortunately become outdated in practice and, as of this writing, cannot be fixed without breaking changes.</p>

<h2 id="Milla-and-Minilla"><a id="Milla"></a>Milla and Minilla</h2>

<p>The <a href="https://metacpan.org/author/MIYAGAWA">prolific creator</a> of <a href="https://metacpan.org/pod/cpanm">cpanm</a>, <a href="https://metacpan.org/pod/Carton">Carton</a>, <a href="https://metacpan.org/pod/cpanfile">cpanfile</a>, and other wonderful convenience tools created a &quot;convention over configuration&quot; tool called <a href="./Dist::Milla.html">Dist::Milla</a>. Dist::Milla is a bundle, minting profile, and command-line wrapper of Dist::Zilla which provides a complete opinionated authoring tool. It requires a certain modernized structure, and in return removes all of the guesswork in managing and releasing distributions.</p>

<p>Its sister project <a href="Minilla.html">Minilla</a> is also notable for being able to achieve almost the same tasks without a dependency on Dist::Zilla, though as a result it cannot be extended with arbitrary plugins from the Dist::Zilla ecosystem.</p>

<h2 id="[@Starter]-and-[@Starter::Git]"><a id="Starter--and--Starter::Git"></a>[@Starter] and [@Starter::Git]</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter">[@Starter]</a> bundle and minting profile is a middle ground. The intention is to provide an unopinionated tool which can be used effectively in almost any distribution similarly to <code>[@Basic]</code>, but that can be updated at the author&#39;s request to newer conventions, and can also optionally provide further modern convenience with slightly stricter and more opinionated structural requirements.</p>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter::Git">[@Starter::Git]</a> bundle and minting profile are variants that provide some extra functionality for a git-based workflow.</p>

<h1 id="THE-DZIL-CORE"><a id="THE"></a>THE DZIL CORE</h1>

<p>Dist::Zilla relies almost entirely on its plugin and command system to provide specific functionality, but these are tied together by a few core systems.</p>

<h2 id="Dist::Zilla1"><a id="Dist1"></a>Dist::Zilla</h2>

<p>The <a href="./Dist::Zilla.html">Dist::Zilla</a> object itself is at the basis of the whole operation. It contains the basic properties of the distribution, such as name, version, and the whole set of plugins that will be run. But it doesn&#39;t do anything itself; it is up to other parts of the system to utilize this information.</p>

<h2 id="Dist::Zilla::Dist::Builder"><a id="Dist2"></a>Dist::Zilla::Dist::Builder</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Dist::Builder">Dist::Zilla::Dist::Builder</a> object is a subclass of the main Dist::Zilla object that is able to <b>build</b> (assemble) the distribution by executing all of the relevant plugins. Additionally it can execute the appropriate plugins to test, install, or release the built distribution. These functions are generally accessed via <a href="./Dist::Zilla::Starter.html#COMMANDS">&quot;COMMANDS&quot;</a>, and primarily work by executing <a href="./Dist::Zilla::Starter.html#PHASES">&quot;PHASES&quot;</a> in a certain order for each task.</p>

<h2 id="Dist::Zilla::Dist::Minter"><a id="Dist3"></a>Dist::Zilla::Dist::Minter</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Dist::Minter">Dist::Zilla::Dist::Minter</a> object is another subclass of the main Dist::Zilla object, this time to implement the <a href="./Dist::Zilla::Starter.html#MINTING">&quot;MINTING&quot;</a> of new distributions using minting profiles. It is much simpler as it only does one thing: run all of the plugins in the minting profile by executing a few <a href="./Dist::Zilla::Starter.html#PHASES">&quot;PHASES&quot;</a>, and write out the resulting build to the filesystem.</p>

<h2 id="Dist::Zilla::MVP::Assembler"><a id="Dist4"></a>Dist::Zilla::MVP::Assembler</h2>

<p><a href="https://metacpan.org/pod/Dist::Zilla::MVP::Assembler">Dist::Zilla::MVP::Assembler</a> is a <a href="https://metacpan.org/pod/Config::MVP">Config::MVP</a>-based configuration parser that is the core of how Dist::Zilla&#39;s plugin <a href="./Dist::Zilla::Starter.html#CONFIGURATION">&quot;CONFIGURATION&quot;</a> works. It reads a <i>dist.ini</i> (or <i>profile.ini</i>) and constructs the requested set of plugins and configuration, and stores them in the Dist::Zilla object.</p>

<h2 id="Dist::Zilla::App"><a id="Dist5"></a>Dist::Zilla::App</h2>

<p><a href="https://metacpan.org/pod/Dist::Zilla::App">Dist::Zilla::App</a> is an <a href="https://metacpan.org/pod/App::Cmd">App::Cmd</a>-based command system that allows the <a href="https://metacpan.org/pod/dzil">dzil</a> script to load and execute any installed <a href="./Dist::Zilla::Starter.html#COMMANDS">&quot;COMMANDS&quot;</a> in the <code>Dist::Zilla::App::Command</code> namespace, such as <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::test"><code>dzil test</code></a> or <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::regenerate"><code>dzil regenerate</code></a>.</p>

<h2 id="Test::DZil"><a id="Test"></a>Test::DZil</h2>

<p><a href="https://metacpan.org/pod/Test::DZil">Test::DZil</a> is a framework that facilitates testing of Dist::Zilla builds and minting profiles. It contains constructors for test-appropriate subclasses of Dist::Zilla::Dist::Builder and Dist::Zilla::Dist::Minter, as well as for generating simple <i>dist.ini</i> text. This is primarily useful for plugin bundle and minting profile authors, so is out of scope for this document.</p>

<h1 id="CONFIGURATION">CONFIGURATION</h1>

<p>The Dist::Zilla configuration for a distribution is a standard INI-format file called <i>dist.ini</i> in the root of the distribution.</p>

<pre><code>  name = Acme-Dist-Name ; comment
  [MyPlugin]
  configuration = for MyPlugin
  ; line comment</code></pre>

<ul>

<li><p>Section names, which are lines in square brackets (<code>[]</code>), indicate plugins to be used.</p>

</li>
<li><p>Lines in the format <code>name = value</code> specify configuration.</p>

</li>
<li><p>The &quot;main section&quot;, meaning any configuration before the first section name, configures the distribution as a whole, with directives such as <code>name</code> and <code>version</code>.</p>

</li>
<li><p>Each following section both adds a plugin to be used, and allows configuration to be passed to that plugin.</p>

</li>
<li><p>Comments start with a semicolon.</p>

</li>
</ul>

<p>There are a few conventions in section names that Dist::Zilla recognizes in order to determine how plugins are loaded. The standard section name will simply be appended to <code>Dist::Zilla::Plugin::</code> to form the class name of the plugin to load. If the section name ends in <code>/</code> followed by other text, that will be the alias for that instance of the plugin; otherwise, the alias is the same as the section name. This is important because each section in an INI file is unique, and because plugins are looked up by this name, so to include the same plugin twice, at least one of them must have an alias. Additionally, some plugins use the alias to set configuration, but this is a bit overly magical.</p>

<pre><code>  [MyPlugin / FirstPlugin]
  [MyPlugin / SecondPlugin]</code></pre>

<p>If the section name is prefixed with <code>@</code>, this indicates a plugin bundle, which is prepended with <code>Dist::Zilla::PluginBundle::</code> to be loaded. A plugin bundle is essentially just a plugin that can only load other plugins, rather than taking action in any build phases.</p>

<pre><code>  [@MyBundle]
  configuration = for the bundle</code></pre>

<p>Plugins loaded by the bundle will be given an alias in the form <code>@BundleName/PluginName</code> and so will not conflict if the same plugin is loaded elsewhere.</p>

<p>A similar convention with the prefix of <code>-</code> indicates a role to be prefixed with <code>Dist::Zilla::Role::</code>, but these are not configured directly in <i>dist.ini</i>; roles implement both general interfaces of Dist::Zilla as well as the <a href="./Dist::Zilla::Starter.html#PHASES">&quot;PHASES&quot;</a> in which plugins take action.</p>

<p>If the section name is prefixed with <code>=</code>, the section name is used as the plugin class name directly, without prepending <code>Dist::Zilla::Plugin::</code>.</p>

<pre><code>  [=Full::Plugin::Class::Name]</code></pre>

<p>The configuration for each section is generally passed directly to that plugin or bundle to handle however it wishes, but a special configuration key <code>:version</code> is recognized in each section by Dist::Zilla itself. In the main section, it will require at least that version of Dist::Zilla to build the distribution; in a plugin or bundle section, it will require at least that version of the plugin or bundle.</p>

<pre><code>  :version = 6.0
  [MyPlugin]
  :version = 0.005</code></pre>

<p>Of additional note is that the <code>[@Starter]</code> bundles (as well as <a href="./Dist::Milla.html">Dist::Milla</a>) compose the <a href="https://metacpan.org/pod/Dist::Zilla::Role::PluginBundle::PluginRemover">-PluginBundle::PluginRemover</a> and <a href="https://metacpan.org/pod/Dist::Zilla::Role::PluginBundle::Config::Slicer">-PluginBundle::Config::Slicer</a> roles, which allow plugins within a bundle to be configured directly in <i>dist.ini</i>.</p>

<p>The PluginRemover role recognizes the <code>-remove</code> option and omits those plugins by name, and the Config::Slicer role recognizes options in the form of <code>PluginName.option</code> and passes through that option to the named plugin within the bundle. This prevents having to add manual pass-through code to the bundle for every possible option that the included plugins accept.</p>

<p>But there is an oddity with options that can be specified multiple times, as Config::Slicer does not know in advance which options allow this. See <a href="https://metacpan.org/pod/Config::MVP::Slicer#CONFIGURATION-SYNTAX">&quot;CONFIGURATION SYNTAX&quot; in Config::MVP::Slicer</a> for full details on config slicing.</p>

<pre><code>  [@Starter]
  regular = configuration
  -remove = Test::Compile
  GatherDir.exclude_filename[a] = foo
  GatherDir.exclude_filename[b] = bar</code></pre>

<p>Occasionally you may need to specify an authordep (module required for using the <i>dist.ini</i> itself) that is not explicitly listed as a plugin. For this purpose, authordeps can additionally be specified as comments.</p>

<pre><code>  ; authordep Pod::Weaver::PluginBundle::DAGOLDEN</code></pre>

<h1 id="COMMANDS">COMMANDS</h1>

<p>After setting up the configuration, Dist::Zilla operations are executed by running commands. Dist::Zilla has a pluggable command system with many core commands and many more available from CPAN. There are only a few needed for the basic operation of creating and releasing a distribution.</p>

<h2 id="Running-Tests"><a id="Running"></a>Running Tests</h2>

<p>One of the most common commands is <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::test"><code>dzil test</code></a>, a wrapper of <a href="https://metacpan.org/pod/Dist::Zilla::Dist::Builder#test">&quot;test&quot; in Dist::Zilla::Dist::Builder</a>. This will assemble the distribution in a temporary directory, and then run the configure, build, and test phases of the <a href="https://metacpan.org/pod/CPAN::Meta::Spec#Phases">&quot;Phases&quot; in CPAN::Meta::Spec</a>. It will also execute any other <code>-TestRunner</code> phase plugins such as <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::RunExtraTests">[RunExtraTests]</a>, which runs any author-side tests from the <code>xt/</code> directory. The <code>--release</code> option can be passed to run release tests in addition to standard and author tests.</p>

<h2 id="Uploading-a-Release"><a id="Uploading"></a>Uploading a Release</h2>

<p>The second most important command is <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::release"><code>dzil release</code></a>, a wrapper of <a href="https://metacpan.org/pod/Dist::Zilla::Dist::Builder#release">&quot;release&quot; in Dist::Zilla::Dist::Builder</a>. This will assemble the distribution, run standard/author/release tests, and then upload the archive to PAUSE with the <code>-Releaser</code> phase. The <code>--trial</code> option will mark the upload as a trial release, so it will not be indexed as stable.</p>

<h2 id="Installing-Dependencies"><a id="Installing"></a>Installing Dependencies</h2>

<p>Two commands that are important when starting work on a Dist::Zilla distribution for the first time are <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::authordeps"><code>dzil authordeps</code></a> and <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::listdeps"><code>dzil listdeps</code></a>. <code>authordeps</code> lists the Dist::Zilla plugins required by the <i>dist.ini</i>, and <code>listdeps</code> lists the dependencies of the distribution itself. The output of each can be piped into <a href="https://metacpan.org/pod/cpanm">cpanm</a> to install any modules needed for working on the distribution. Note that the <code>authordeps</code> requirements must be installed for most other <code>dzil</code> commands to succeed, including <code>listdeps</code>. The non-core command <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::installdeps"><code>dzil installdeps</code></a> wraps this process into a single command.</p>

<h2 id="Other-Commands"><a id="Other1"></a>Other Commands</h2>

<ul>

<li><p><a href="https://metacpan.org/pod/Dist::Zilla::App::Command::build"><code>dzil build</code></a> assembles the distribution and stores the tarball and extracted directory locally.</p>

</li>
<li><p><a href="https://metacpan.org/pod/Dist::Zilla::App::Command::run"><code>dzil run</code></a> builds the distribution temporarily like <code>dzil test</code> but runs the supplied command instead of running tests.</p>

</li>
<li><p><a href="https://metacpan.org/pod/Dist::Zilla::App::Command::install"><code>dzil install</code></a> assembles the distribution temporarily and then installs it to the system with a CPAN installer.</p>

</li>
<li><p><a href="https://metacpan.org/pod/Dist::Zilla::App::Command::clean"><code>dzil clean</code></a> cleans up the Dist::Zilla <i>.build</i> directory and any built distribution directories or archives.</p>

</li>
</ul>

<h2 id="Regenerating-Files"><a id="Regenerating"></a>Regenerating Files</h2>

<p>Another common task is to copy updated versions of generated files from the distribution build to the source tree, such as generated <i>README</i> files. Often this is done whenever the distribution is built with <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::CopyFilesFromBuild">[CopyFilesFromBuild]</a>, but this can be disruptive when trying to run tests or other operations. By using the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter#regenerate">regenerate</a> option for <code>[@Starter]</code>, or the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Regenerate">[Regenerate]</a> or <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Regenerate::AfterReleasers">[Regenerate::AfterReleasers]</a> plugins, the <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::regenerate"><code>dzil regenerate</code></a> command can be used for this purpose instead, so the distribution can be built without modifying the source tree, and the files can be regenerated as needed.</p>

<h1 id="MINTING">MINTING</h1>

<p>Dist::Zilla is primarily a distribution management tool, but it leverages the same command and plugin system to provide a minting tool. A minting profile can be configured to automatically set up the basic framework for new distributions. The <a href="https://metacpan.org/pod/Dist::Zilla::MintingProfile::Starter">Starter</a> and <a href="https://metacpan.org/pod/Dist::Zilla::MintingProfile::Starter::Git">Starter::Git</a> minting profiles provide a starting point and instructions for customizing profiles, as does <a href="http://dzil.org/tutorial/minting-profile.html">dzil.org</a>.</p>

<p>A minting profile primarily consists of a <i>profile.ini</i> file, which uses the same configuration format as <i>dist.ini</i> described in <a href="./Dist::Zilla::Starter.html#CONFIGURATION">&quot;CONFIGURATION&quot;</a>. It may include other files as needed by the profile, including a <i>dist.ini</i> plugins configuration template, module template, or a skeleton distribution directory of templates.</p>

<p>Some metadata such as author, license, and copyright is set from global configuration by default for new distributions. This configuration is stored in <code>~/.dzil/config.ini</code>, which can be initialized using the <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::setup"><code>dzil setup</code></a> command.</p>

<p>The process of minting a distribution primarily involves the <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::new"><code>dzil new</code></a> command, invoked with the name of the module or distribution to create. By default, the local profile in <code>~/.dzil/profiles/default</code> will be used if present, and otherwise a default <code>[@Basic]</code> profile. The <code>-p</code> option can be used to specify the profile name to use, and the <code>-P</code> option can specify an installed minting profile module as the provider. The default profile or provider can be set in the <code>~/.dzil/config.ini</code> configuration as documented for <code>dzil new</code>.</p>

<h1 id="PHASES">PHASES</h1>

<p>Plugins included in <i>dist.ini</i> are ordered, but they do not necessarily execute in order. <a href="https://metacpan.org/pod/Dist::Zilla::Dist::Builder">Dist::Zilla::Dist::Builder</a> or <a href="https://metacpan.org/pod/Dist::Zilla::Dist::Minter">Dist::Zilla::Dist::Minter</a> methods as invoked by <a href="./Dist::Zilla::Starter.html#COMMANDS">&quot;COMMANDS&quot;</a> will run one or more <b>phases</b>, which will execute any code that plugins have registered for that phase, in the order those plugins were used. The command <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::dumpphases"><code>dzil dumpphases</code></a> can be used to see a full listing of the phases that the plugins in a <i>dist.ini</i> will run in.</p>

<p>A property of phases that many plugins find useful is that successive phases will only run if previous phases completed successfully. For example, the <a href="./Dist::Zilla::Starter.html#BeforeRelease">&quot;BeforeRelease&quot;</a> phase will only run if the distribution was successfully built, the <a href="./Dist::Zilla::Starter.html#Releaser">&quot;Releaser&quot;</a> phase will only run if the BeforeRelease checks and release tests succeeded, and the <a href="./Dist::Zilla::Starter.html#AfterRelease">&quot;AfterRelease&quot;</a> phase will only run if the release was successful.</p>

<h2 id="BeforeBuild">BeforeBuild</h2>

<p>The distribution build consists of several phases, starting with <a href="https://metacpan.org/pod/Dist::Zilla::Role::BeforeBuild">-BeforeBuild</a>, for any build preparation. No plugins in <code>[@Starter]</code> execute during this phase by default.</p>

<h2 id="BeforeMint">BeforeMint</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::BeforeMint">-BeforeMint</a> phase is executed at the beginning of the minting process for a new distribution source tree instead of <code>-BeforeBuild</code>.</p>

<h2 id="FileGatherer">FileGatherer</h2>

<p>In the <a href="https://metacpan.org/pod/Dist::Zilla::Role::FileGatherer">-FileGatherer</a> phase, many plugins add files to the distribution tree being assembled; in <code>[@Starter]</code> this includes the plugins <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::GatherDir">[GatherDir]</a> (<a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Git::GatherDir">[Git::GatherDir]</a> in <code>[@Starter::Git]</code>), <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaYAML">[MetaYAML]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaJSON">[MetaJSON]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::License">[License]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Pod2Readme">[Pod2Readme]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PodSyntaxTests">[PodSyntaxTests]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::ReportPrereqs">[Test::ReportPrereqs]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::Compile">[Test::Compile]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a> (or the configured installer plugin), and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Manifest">[Manifest]</a>. This phase is also executed by the minting process to add files to a new distribution source tree.</p>

<h2 id="EncodingProvider">EncodingProvider</h2>

<p>In the <a href="https://metacpan.org/pod/Dist::Zilla::Role::EncodingProvider">-EncodingProvider</a> phase, a plugin may set the encoding for gathered files. No plugins in <code>[@Starter]</code> execute during this phase by default. This phase is also executed by the minting process.</p>

<h2 id="FilePruner">FilePruner</h2>

<p>In the <a href="https://metacpan.org/pod/Dist::Zilla::Role::FilePruner">-FilePruner</a> phase, gathered files may be removed from the distribution. In <code>[@Starter]</code> this is handled by the plugins <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PruneCruft">[PruneCruft]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PruneFiles">[PruneFiles]</a>, and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ManifestSkip">[ManifestSkip]</a>. This phase is also executed by the minting process.</p>

<h2 id="FileMunger">FileMunger</h2>

<p>In the <a href="https://metacpan.org/pod/Dist::Zilla::Role::FileMunger">-FileMunger</a> phase, files in the distribution may be modified. In <code>[@Starter]</code> the plugin <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::Compile">[Test::Compile]</a> runs during this phase in order to update its test file to test all gathered modules and scripts. With the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter#managed_versions">managed_versions</a> option, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::RewriteVersion">[RewriteVersion]</a> and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::NextRelease">[NextRelease]</a> plugins also operate during this phase. This phase is also executed by the minting process.</p>

<h2 id="AfterMint">AfterMint</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::AfterMint">-AfterMint</a> phase is executed to conclude the minting process for a new distribution source tree. The build process instead continues with several more phases.</p>

<h2 id="PrereqSource">PrereqSource</h2>

<p>In the <a href="https://metacpan.org/pod/Dist::Zilla::Role::PrereqSource">-PrereqSource</a> phase, plugins can add prerequisites to the distribution. In <code>[@Starter]</code> the plugins <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PodSyntaxTests">[PodSyntaxTests]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::ReportPrereqs">[Test::ReportPrereqs]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Test::Compile">[Test::Compile]</a>, and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a> (or the configured installer plugin) add prereqs during this phase. Plugins used to configure the distribution&#39;s prereqs such as <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Prereqs">[Prereqs]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Prereqs::FromCPANfile">[Prereqs::FromCPANfile]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::PrereqsFile">[PrereqsFile]</a>, and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::AutoPrereqs">[AutoPrereqs]</a> will normally run in this phase.</p>

<h2 id="InstallTool">InstallTool</h2>

<p>In the <a href="https://metacpan.org/pod/Dist::Zilla::Role::InstallTool">-InstallTool</a> phase, the installer&#39;s <i>Makefile.PL</i> or <i>Build.PL</i> is generated in the distribution. In <code>[@Starter]</code>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a> or the configured installer plugin handles this phase.</p>

<h2 id="AfterBuild">AfterBuild</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::AfterBuild">-AfterBuild</a> phase concludes the distribution build, for any post-build cleanup. No plugins in <code>[@Starter]</code> execute during this phase by default.</p>

<h2 id="BuildRunner">BuildRunner</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::BuildRunner">-BuildRunner</a> phase executes the configure and build phases of the <a href="https://metacpan.org/pod/CPAN::Meta::Spec#Phases">&quot;Phases&quot; in CPAN::Meta::Spec</a> (not to be confused with the Dist::Zilla build that has assembled the distribution). This is primarily used to prepare the distribution for testing or installing. In <code>[@Starter]</code>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a> or the configured installer plugin handles this phase.</p>

<h2 id="TestRunner">TestRunner</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::TestRunner">-TestRunner</a> phase executes the test phase of the <a href="https://metacpan.org/pod/CPAN::Meta::Spec#Phases">&quot;Phases&quot; in CPAN::Meta::Spec</a> and runs any author-side testing. In <code>[@Starter]</code>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a> (or the configured installer plugin) and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::RunExtraTests">[RunExtraTests]</a> handle this phase.</p>

<h2 id="BeforeArchive">BeforeArchive</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::BeforeArchive">-BeforeArchive</a> phase is executed after assembling the distribution and before packaging it into an archive, such as for the <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::build"><code>dzil build</code></a> command or before releasing. No plugins in <code>[@Starter]</code> execute during this phase by default.</p>

<h2 id="BeforeRelease">BeforeRelease</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::BeforeRelease">-BeforeRelease</a> phase prepares a built distribution for release. In <code>[@Starter]</code>, the plugins <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::TestRelease">[TestRelease]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ConfirmRelease">[ConfirmRelease]</a>, and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::UploadToCPAN">[UploadToCPAN]</a> (to ensure PAUSE username and password are available) execute during this phase. In <code>[@Starter::Git]</code>, the plugin <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Git::Check">[Git::Check]</a> executes during this phase. Other pre-release checks like <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::CheckChangesHasContent">[CheckChangesHasContent]</a> also execute in this phase.</p>

<h2 id="Releaser">Releaser</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::Releaser">-Releaser</a> phase releases the distribution to CPAN. In <code>[@Starter]</code>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::UploadToCPAN">[UploadToCPAN]</a> (or <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::FakeRelease">[FakeRelease]</a>) handles this phase.</p>

<h2 id="AfterRelease">AfterRelease</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::AfterRelease">-AfterRelease</a> phase concludes the distribution release process, performing any post-release cleanup or tagging. No plugins in <code>[@Starter]</code> execute during this phase by default. With the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter#managed_versions">managed_versions</a> option, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::NextRelease">[NextRelease]</a> and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::BumpVersionAfterRelease">[BumpVersionAfterRelease]</a> plugins execute during this phase. With the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter#regenerate">regenerate</a> option, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::CopyFilesFromRelease">[CopyFilesFromRelease]</a> plugin executes during this phase. In <code>[@Starter::Git]</code>, the plugins <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Git::Commit">[Git::Commit]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Git::Tag">[Git::Tag]</a>, and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Git::Push">[Git::Push]</a> execute during this phase.</p>

<h2 id="NameProvider">NameProvider</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::NameProvider">-NameProvider</a> phase executes when required rather than at a specific time, to determine the name of the distribution. No plugins in <code>[@Starter]</code> execute during this phase by default, and the name can be provided directly by setting <code>name</code> in <i>dist.ini</i>. The <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::NameFromDirectory">[NameFromDirectory]</a> plugin can act as a name provider.</p>

<h2 id="VersionProvider">VersionProvider</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::VersionProvider">-VersionProvider</a> phase executes when required rather than at a specific time, to determine the version of the distribution. No plugins in <code>[@Starter]</code> execute during this phase by default, and the version can be provided directly by setting <code>version</code> in <i>dist.ini</i>. With the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter#managed_versions">managed_versions</a> option, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::RewriteVersion">[RewriteVersion]</a> plugin acts as the version provider.</p>

<h2 id="ReleaseStatusProvider">ReleaseStatusProvider</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::ReleaseStatusProvider">-ReleaseStatusProvider</a> phase executes when required rather than at a specific time, to determine the <a href="https://metacpan.org/pod/CPAN::Meta::Spec#release_status">&quot;release_status&quot; in CPAN::Meta::Spec</a> of the distribution. No plugins in <code>[@Starter]</code> execute during this phase by default. It defaults to <code>stable</code> and is usually set to another value by passing the <code>--trial</code> option to <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::release"><code>dzil release</code></a> or using a version containing an underscore, but can also be set by a plugin in this phase.</p>

<h2 id="LicenseProvider">LicenseProvider</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::LicenseProvider">-LicenseProvider</a> phase executes when required rather than at a specific time, to determine the license of the distribution. No plugins in <code>[@Starter]</code> execute during this phase by default, and the license can be provided directly by setting <code>license</code> in <i>dist.ini</i>, or otherwise guessed from the main module&#39;s POD.</p>

<h2 id="MetaProvider">MetaProvider</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::MetaProvider">-MetaProvider</a> phase executes when required rather than at a specific time, to generate the distribution&#39;s <a href="https://metacpan.org/pod/CPAN::Meta::Spec">CPAN metadata</a>. In <code>[@Starter]</code>, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaConfig">[MetaConfig]</a>, <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaProvides::Package">[MetaProvides::Package]</a>, and <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaNoIndex]">[MetaNoIndex]</a> plugins provide metadata in this phase. Other metadata providers like <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MetaResources">[MetaResources]</a> also execute in this phase.</p>

<h2 id="ShareDir">ShareDir</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::ShareDir">-ShareDir</a> phase executes when required rather than at a specific time, to configure sharedirs for installation. In <code>[@Starter]</code>, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ShareDir">[ShareDir]</a> plugin configures a distribution sharedir if present.</p>

<h2 id="ExecFiles">ExecFiles</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::ExecFiles">-ExecFiles</a> phase executes when required rather than at a specific time, to configure files for installation as executables. In <code>[@Starter]</code>, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::ExecDir">[ExecDir]</a> plugin marks a directory as containing executables, which may be used by installer plugins such as <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::MakeMaker">[MakeMaker]</a>.</p>

<h2 id="Regenerator">Regenerator</h2>

<p>The <a href="https://metacpan.org/pod/Dist::Zilla::Role::Regenerator">-Regenerator</a> phase is a non-core extension which executes when <a href="https://metacpan.org/pod/Dist::Zilla::App::Command::regenerate"><code>dzil regenerate</code></a> is run, intended for generating files in the source tree outside of a standard distribution build. With the <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter#regenerate">regenerate</a> option for <code>[@Starter]</code>, the <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::Regenerate::AfterReleasers">[Regenerate::AfterReleasers]</a> plugin promotes <a href="https://metacpan.org/pod/Dist::Zilla::Plugin::CopyFilesFromRelease">[CopyFilesFromRelease]</a> to also execute during this phase.</p>

<h1 id="AUTHOR">AUTHOR</h1>

<p>Dan Book &lt;dbook@cpan.org&gt;</p>

<h1 id="COPYRIGHT-AND-LICENSE"><a id="COPYRIGHT"></a>COPYRIGHT AND LICENSE</h1>

<p>This software is Copyright (c) 2016 by Dan Book.</p>

<p>This is free software, licensed under:</p>

<pre><code>  The Artistic License 2.0 (GPL Compatible)</code></pre>

<h1 id="SEE-ALSO"><a id="SEE"></a>SEE ALSO</h1>

<p><a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter">Dist::Zilla::PluginBundle::Starter</a>, <a href="https://metacpan.org/pod/Dist::Zilla::PluginBundle::Starter::Git">Dist::Zilla::PluginBundle::Starter::Git</a>, <a href="https://metacpan.org/pod/Dist::Zilla::MintingProfile::Starter">Dist::Zilla::MintingProfile::Starter</a>, <a href="https://metacpan.org/pod/Dist::Zilla::MintingProfile::Starter::Git">Dist::Zilla::MintingProfile::Starter::Git</a></p></div>

<div id="metacpan_install-instructions-dialog" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Module Install Instructions</h4>
      </div>
      <div class="modal-body">
        <p>To install Dist::Zilla::PluginBundle::Starter, copy and paste the appropriate command in to your terminal.</p>
        <p><a href="https://metacpan.org/dist/App-cpanminus/view/bin/cpanm">cpanm</a></p>
        <pre><code>cpanm Dist::Zilla::PluginBundle::Starter</code></pre>
        <p><a href="https://metacpan.org/pod/CPAN">CPAN shell</a></p>
        <pre><code>perl -MCPAN -e shell
install Dist::Zilla::PluginBundle::Starter</code></pre>
        <p>For more information on module installation, please visit <a href="https://www.cpan.org/modules/INSTALL.html">the detailed CPAN module installation guide</a>.</p>
      </div>
      <div class="modal-footer">
        <a href="./Dist::Zilla::Starter.html#" data-dismiss="modal" class="btn">Close</a>
      </div>
    </div>
  </div>
</div>
          </main>
          <div class="content-pagination">
          </div>
        </div>
        <footer class="footer">
          <div class="footer-container">
            <div class="footer-social">
              <div class="footer-link footer-logo">
                <a href="https://metacpan.org/">
                  <img src="https://metacpan.org/static/images/metacpan-logo.svg" alt="MetaCPAN" />
                </a>
              </div>
              <a class="footer-social-link" href="https://github.com/metacpan">
                <i class="fab fa-github-square"></i>
              </a>
              <a class="footer-social-link" href="https://fosstodon.org/@metacpan">
                <i class="fab fa-mastodon"></i>
              </a>
            </div>
            <div class="footer-links">
              <div class="footer-link">
                  <a href="https://metacpan.org/about">About</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/sponsors">Sponsor</a>
              </div>
              <div class="footer-link">
                  <a href="https://grep.metacpan.org">grep::cpan</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/recent">Recent</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/faq">FAQ</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/tools">Tools</a>
              </div>
              <div class="footer-link">
                  <a href="https://fastapi.metacpan.org/">API</a>
              </div>
              <div class="footer-link">
                  <a href="https://www.perl.org/">Perl.org</a>
              </div>
            </div>
            <div class="footer-sponsors">
              <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener">
                <img class="footer-sponsor-bytemark" src="https://metacpan.org/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener">
                <img class="footer-sponsor-liquidweb" src="https://metacpan.org/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener">
                <img class="footer-sponsor-deriv" src="https://metacpan.org/static/images/sponsors/deriv.svg" alt="Deriv logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener">
                <img class="footer-sponsor-geocode" src="https://metacpan.org/static/images/sponsors/geocodelogo.svg" alt="Geocode logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener">
                <img class="footer-sponsor-fastly" src="https://metacpan.org/static/images/sponsors/fastly_logo.svg" alt="Fastly logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener">
                <img class="footer-sponsor-opencage" src="https://metacpan.org/static/images/sponsors/open-cage.svg" alt="OpenCage logo">
              </a>
            </div>
          </div>
        </footer>
        <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Keyboard Shortcuts</h4>
              </div>
              <div class="modal-body row">
<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Global</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>s</kbd>
        </td>
        <td>Focus search bar</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>?</kbd>
        </td>
        <td>Bring up this help dialog</td>
      </tr>
    </tbody>
  </table>

  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>GitHub</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>p</kbd>
        </td>
        <td>Go to pull requests</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>go to github issues (only if github is preferred repository)</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>POD</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>a</kbd>
        </td>
        <td>Go to author</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>c</kbd>
        </td>
        <td>Go to changes</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>Go to issues</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>d</kbd>
        </td>
        <td>Go to dist</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>r</kbd>
        </td>
        <td>Go to repository/SCM</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>s</kbd>
        </td>
        <td>Go to source</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>b</kbd>
        </td>
        <td>Go to file browse</td>
      </tr>

    </tbody>
  </table>
</div>

<div class="col-md-12">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Search terms</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><em>module:</em> (e.g. <a href="https://metacpan.org/search?q=module%3APlugin">module:Plugin</a>)</td>
      </tr>
      <tr>
        <td><em>distribution:</em> (e.g. <a href="https://metacpan.org/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td>
      </tr>
      <tr>
        <td><em>author:</em> (e.g. <a href="https://metacpan.org/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td>
      </tr>
      <tr>
        <td><em>version:</em> (e.g. <a href="https://metacpan.org/search?q=version%3A1.00">version:1.00</a>)</td>
      </tr>
    </tbody>
  </table>
</div>
              </div>
              <div class="modal-footer"></div>
            </div>
          </div>
        </div>
    </body>
</html>
